<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script src="./js/mock.js"></script>
    <script>
      // 属性值为字符串
      console.log(
        Mock.mock({
          "data1|1-4": "张三", // min-max: 随机重复1-4次（字符串）
          "data2|3": "李四", // min-max: 重复3次（字符串）
        })
      );

      // 属性值为数子
      console.log(
        Mock.mock({
          "number1|+1": 100, // 累加
          "number2|1-100": 12, // 随机1-100
          "number3|1-100.5": 12, // 随机整数1-100, 小数部分位数固定为5位
          "number4|1-100.1-10": 12, // 随机整数1-100,小数位数1-10位
          "number5|123.1-10": 12, // 整数123, 小数位数随机1-10位
          "number6|123.10": 12, // 整数123, 小数位数随机1-10位
        })
      );

      // 属性值位布尔值
      console.log(
        Mock.mock({
          "b1|1": false, // 1: 布尔值false,true各占50%
          "b2|1-5": false, // min / (min + max): 出现的true的概率
        })
      );

      // 属性值位对象
      console.log(
        Mock.mock({
          // 随机取1-3个对象的属性值
          "num1|1-3": {
            a: 10,
            b: 20,
            c: 30,
            d: 40,
          },
          // 随机取2个对象的属性值
          "num2|2": {
            a: 10,
            b: 20,
            c: 30,
            d: 40,
          },
        })
      );

      // 属性值为数组
      console.log(
        Mock.mock({
          // 随机取数组中的一个
          "arr1|1": ["a", "b", "c", "d", "e"],
          // 重复数组1-3次
          "arr2|1-3": ["a", "b", "c", "d", "e"],
        })
      );

      // 属性值为function
      console.log(
        // 执行属性值方法
        Mock.mock({
          result: function () {
            return 1 + 2;
          },
        })
      );

      // 属性值为正则表达式
      console.log(
        Mock.mock({
          reg1: /[a-z][A-Z][0-9]/,
          reg2: /\w\W\s\S\d\D/,
          reg3: /\d{5,10}/,
        })
      );

      // Mock.Random()
      const Random = Mock.Random;
      // Basic
      console.log(Random.boolean(), Random.boolean(1, 9, true));

      // natural
      console.log(Random.natural(), Random.natural(100), Random.natural(0, 50));

      // integer
      console.log(Random.integer(), Random.integer(100), Random.integer(0, 50));

      // float
      console.log(Random.float(), Random.float(60, 100, 3, 5));

      // character
      console.log(Random.character(), Random.character("lower"));

      // string
      console.log(Random.string(), Random.string(5), Random.string("lower", 5));

      // range
      console.log(Random.range(10), Random.range(3, 7), Random.range(1, 10, 2));

      // date
      console.log(Random.date(), Random.date("yyyy-MM-dd"));
    </script>
  </body>
</html>
